/*	TGThemeManager.h
 *	Part of ThinkGeek LED Clock
 *	http://tmorgan.shutupgeorge.com/thinkgeek/
 *
 * Copyright (c)2003-2006 Tim Morgan. All rights reserved. Please visit
 * http://tmorgan.shutupgeorge.com/other/license.html for more information about
 * your rights and responsibilities regarding this source code.
 */

#import <Cocoa/Cocoa.h>

/** Represents the normal background style used by the current theme. */
const NSString *TGBackgroundStyleDefault;
/** Represents a solid color used for the background. */
const NSString *TGBackgroundStyleCustomColor;
/** Represents an image file used for the background. */
const NSString *TGBackgroundStyleCustomImage;
/** Represents a screenshot of the current display being used for the background. */
const NSString *TGBackgroundStyleDesktop;

/**
 * Stores and manages appearance styles that the clock can represent. Each theme
 * is stored under a unique name that it registers itself with, and the theme is
 * accessed using that key.
 *
 * This class also stores constants relating to other aspects of the clock's
 * appearance.
 *
 * @author Tim Morgan
 */

@interface TGThemeManager : NSObject {
	@private NSDictionary *themes;
}

/**
 * Returns the singleton instance of this class, instantiated by the nib file.
 *
 * @return The singleton instance of this class
 */

+ (TGThemeManager *) themeManager;

/**
 * Returns true if the given string constant is a valid background style, as
 * known by this object.
 *
 * @param style a background style
 * @return True if the style is a known style; false otherwise
 */

- (BOOL) isValidBackgroundStyle:(NSString *)style;

/**
 * Returns true if the given string constant is a valid clock theme, one that
 * has been registered to this object.
 *
 * @param style a clock theme
 * @return True if the theme is known; false otherwise
 */

- (BOOL) isValidClockTheme:(NSString *)theme;

@end
